-- 定时器扩展
---@module timerEx
require "sys"
require "log"
require "tool"
module(..., package.seeall)
-- 指定每天点xx点xx分执行定时任务
-- 每天hour 时min分执行
-- 执行前请先保证启动时间是正常的
-- ... fnc 的参数

--ocal function test1(t1)
--	log.info("test1"..t1)
--end
--timerEx.timerLoopStart(test1,12,15,0,"aa")
function timerLoopStart(fnc,hour,min,sec,...)
	sys.taskInit(    
		function (...)
			sys.wait(10000)
			-- 先获取当前时间
			--curtab = os.date("*t")
			local curtab = misc.getClock()

			--log.info("aaaaaa")
			--tool.print_dump(curtab)
			local tagetTime = tool.deepCopy(curtab)
			tagetTime["hour"] = hour
			tagetTime["min"] = min
			tagetTime["sec"] = sec
			--tool.print_dump(tagetTime)
			local tagetTimestamp = os.time(tagetTime)  --定时时间的时间戳 到秒
			local curTimestamp = tool.miscTime() --当前时间的时间戳
			local diffSec = tagetTimestamp - curTimestamp --到目标时间点还差多久
			if(diffSec<0) then-- 今天已经过了时间点了那么就是下一天
				diffSec = 86400 + diffSec --60*60*24 = 86400
			end
            log.info("timerEx","wait sec=",diffSec)
            sys.wait(diffSec*1000) --ms
            log.info("timerEx","start task")
            while true do
            	fnc(unpack(arg))
            	sys.wait(86400000) --60*60*24 = 86400 --ms
            end
        end
    ,unpack(arg))
end
